package dao;

import java.sql.*;
import javax.swing.*;
/**
 * 
 * @author GilmarJunior
 */

/* 

Código para criar o Banco de Dados no MySQL ---------------------------------------------------------------

    CREATE DATABASE `sysdog`;

Código para criar a tabela cliente que será utilizada pelo formulário Cadastro de Clientes ----------------

    CREATE TABLE `cliente` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `dataCadastro` varchar(10) DEFAULT NULL,
    `nome` varchar(150) DEFAULT NULL,
    `dataNascimento` varchar(10) DEFAULT NULL,
    `rg` varchar(11) DEFAULT NULL,
    `cpf` varchar(14) DEFAULT NULL,
    `apelido` varchar(50) DEFAULT NULL,
    `email` varchar(50) DEFAULT NULL,
    `telefone` varchar(14) DEFAULT NULL,
    `celular` varchar(14) DEFAULT NULL,
    `endereco` varchar(150) DEFAULT NULL,
    `numero` varchar(11) DEFAULT NULL,
    `complemento` varchar(50) DEFAULT NULL,
    `bairro` varchar(50) DEFAULT NULL,
    `cidade` varchar(50) DEFAULT NULL,
    `estado` varchar(50) DEFAULT NULL,
    `cep` varchar(10) DEFAULT NULL,
    `observacoes` varchar(250) DEFAULT NULL,
    PRIMARY KEY (`id`)
    )ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

Código para criar a tabela dog que será utilizada pelo formulário Cadastro de Dog ----------------

    CREATE TABLE `sysdog`.`dog` (
      `id` INT NOT NULL AUTO_INCREMENT,
      `nome` VARCHAR(100) NULL,
      `raça` VARCHAR(45) NULL,
      `peso` VARCHAR(45) NULL,
      PRIMARY KEY (`id`));

 */

public class ConexaoDao {
    
    public static Connection connection = null;
    public static Statement statement = null;
    public static ResultSet resultSet = null;
    public static final String driver = "com.mysql.jdbc.Driver";
    public static final String url = "jdbc:mysql://localhost:3306/sysdog";
    public static final String login = "root";
    public static final String senha = "junior@1230";
    
    public static boolean getConnection(){
        try{
            Class.forName(driver);
            connection = DriverManager.getConnection(url,login,senha);
            statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            //JOptionPane.showMessageDialog(null, "Informações salvas com sucesso!!!","Conexão com Bando",JOptionPane.INFORMATION_MESSAGE);
            return true;
        }catch (ClassNotFoundException erro){
            erro.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erro ao tentar gravar Informações no Banco!!!","Conexão com Bando",JOptionPane.ERROR_MESSAGE);
            return false;
        }catch(SQLException erro){
            erro.printStackTrace();
            JOptionPane.showMessageDialog(null, "Erro","Conexão com Bando",JOptionPane.ERROR_MESSAGE);
            return false;
        }
    }
    
    public static void close(){
        closeResultSet();
        closeStatement();
        closeConnection();
    }
    
    private static void closeConnection(){
        try{
            connection.close();
            JOptionPane.showMessageDialog(null, "Desconectou...");
	}catch(SQLException erro){
            erro.printStackTrace();
        }
    }
	
    private static void closeStatement(){
        try{
            statement.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
	
    private static void closeResultSet(){
        try{
            resultSet.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
	
    //Carrega o resultSet com o resultado do script SQL
    public static void setResultSet(String sql){
        try{
            resultSet =  statement.executeQuery(sql);
        }catch(SQLException erro){
            erro.printStackTrace();
        }
    }
	
    /*Executa um script SQL de atualização
    * retorna um valor inteiro contendo a
    * quantidade de linhas afetadas
    */
    public static int runSql(String sql){
        int quant = 0 ;
        try{
            quant = statement.executeUpdate(sql);
        }catch(SQLException erro){
            erro.printStackTrace();
        }
        return quant;
    }
}